The present invention relates to the field of communicating packetized data between network node devices. More particularly, the present invention relates to the field of processing packetized data by parsing isochronously received data packets to facilitate data reconstruction operations.
International standard IEEE 1394-1995 , xe2x80x9cIEEE 1394-1995 Standard For A High Performance Serial Bus,xe2x80x9d defines an economical, scalable, high-speed serial bus architecture. This standard provides a universal input/output connection for interconnecting digital devices including, for example, audio-visual equipment and personal computers.
The IEEE 1394-1995 standard defines a peer-to-peer network architecture characterized by point-to-point signaling. A network implemented in accordance with the IEEE 139-1995 standard comprises a plurality of nodes, where each node includes one or more ports. Ports may be linked together via standardized cabling, subject to a restriction that disallows closed loops. In terms of physical topology, the IEEE 1394-1995 standard provides for a non-cyclic network having multiple ports and finite branches.
The IEEE 1394-1995 standard supports both asynchronous and isochronous information transfers. Asynchronous transfers are operations that communicate data from a source node to a destination node and take place as soon as permitted after initiation. Asynchronous transfer operations do not provide a mechanism for maintaining temporal relationships within an information stream between successive data transfers. An example of an application appropriate for asynchronous data transfer is communication of a still image or text document. Control commands can also be sent asynchronously.
Isochronous transfers provide information delivery characterized by predictable, bounded latency; guaranteed bandwidth; and on-time data reception. Time intervals between particular events have essentially the same duration at both the transmitting and receiving applications. Isochronous transfer is particularly advantageous in real-time multimedia applications, such as the real-time transfer of digital audio and video data between a digital video camera and a digital television.
The IEEE 1394-1995 standard defines a structured packet into which information is encapsulated for isochronous transfer upon the bus. FIG. 1 is a block diagram showing an IEEE 1394-1995 isochronous packet 10. The IEEE 1394-1995 isochronous packet 10 includes a header field 12; a header cyclic redundancy check (CRC) field 14; a payload data field 16; and a payload data CRC field 18.
The IEEE 1394-1995 standard does not specify particular formats for the contents of the payload data field 16. Rather, the organization of payload data in accordance with a particular format and the interpretation of payload data field contents are functions of the transmitting and receiving applications, respectively. In order to facilitate interoperability between a wide range of digital devices, payload data fields 16 should encapsulate data in accordance with a standardized format. One such format that has gained wide acceptance is the Common Isochronous Protocol (CIP).
FIG. 2 is a block diagram showing a CIP packet 20. The CIP packet 20 includes a CIP header field 22 and a CIP data field 28. The CIP header field 22 spans a first and a second CIP header quadlet 24, 26 (i.e., 8 bytes total), while the CIP data field 28 spans 480 bytes. The CIP header field 22 stores source node identification and timing information, plus parameters that define manners in which the information contained in the CIP data field 28 may be interpreted.
A device that receives a stream of IEEE 1394-1995 isochronous packets 10 typically stores the contents of each such packet""s payload data field 16 in a receive buffer. Thus, when payload data fields 16 contain CIP packets 20, a first receive buffer contains a sequence of CIP packets 20. Once the first receive buffer is full, the receiving device stores subsequent CIP packets 20 in a second receive buffer. Hardware and/or software concurrently processes the CIP packet sequence in the first receive buffer to reconstruct data contained therein in accordance with a format expected by an application program. For example, software may process CIP packet sequences by extracting video data and generating a complete video frame in accordance with a standard format such as Digital Video (DV). A DV frame comprises 120 kilobytes of compressed digital audio and video data, organized as a set of Data in Frame (DIF) sequences. Once constructed, the DV frame may be delivered to an application program for decompression and playback.
Due to timing and data availability considerations, the CIP data field 28 within a particular CIP packet 20 may not contain any information. That is, some CIP packets 20 may contain CIP header information only, being empty in terms of data content. Processing sequential CIP packets 20 under the assumption that data immediately follows CIP header information may therefore produce data reconstruction errors.
The generation of a complete DV frame occasionally requires data from more than one receive buffer. Moreover, the first receive buffer occasionally contains data forming an incomplete DV frame, followed by some or all data necessary to generate a first complete DV frame. Some application programs are incapable of accepting an incomplete DV frame. Hence, processing CIP packets 20 under the assumption that 1) a full DV frame can be generated using a single receive buffer; or 2) a first received CIP packet 20 may be used to begin constructing a first complete DV frame may also produce data reconstruction errors.
The present invention comprises a system and method for parsing the content of packets received from a source node within a networked node environment. The networked node environment preferably comprises an IEEE 1394-1995 serial bus network that includes the source node and at least one destination node. The source node serves as a data transmission unit that transfers a stream of IEEE 1394-1995 isochronous packets 10 to the data reception unit. Each IEEE 1394-1995 packet 10 contains a CIP packet 20. The data reception unit parses the CIP packets 20, and reconstructs data obtained therefrom in accordance with a predetermined format. The source node serves may be, for example, a digital camcorder, a digital videocassette recorder, or a computer system. The destination node is preferably a computer system. The destination node could be essentially any device or system capable of processing a received information stream in accordance with the present invention.
Within the computer system, an IEEE 1394-1995 interface unit receives the stream of IEEE 1394-1995 packets 10, and transfers the CIP packets 20 contained therein to a first isochronous receive buffer. Upon filling the first isochronous receive buffer, the interface unit begins filling a second isochronous receive buffer, and so on. After the first isochronous receive buffer is full, a parsing state machine locates a CIP header field 22 within a first CIP packet 20 in the first isochronous receive buffer. The parsing state machine determines whether the first CIP header field 22 is immediately followed by a CIP header field 22 within a second CIP packet 20. If so, the first CIP packet 20 is empty. The parsing state machine then determines whether the second CIP packet 20 is empty, and so on.
Upon finding a CIP header field 22 that is immediately followed by a CIP data field 28, the parsing state machine transfers DV data within the CIP data field 28 to a user buffer. The parsing state machine transfers CIP data field contents to the user buffer only after finding a non-empty CIP packet 20 that corresponds to the beginning of a DV frame. After transferring DV data to the user buffer, the parsing state machine considers subsequent CIP packets 20 within the first isochronous buffer. After considering each packet within the first isochronous buffer, the parsing state machine considers CIP packets 20 within the second isochronous buffer, and so on. In the event that the interface unit has stored a given non-empty CIP packet 20 as a first partial CIP packet and a second partial CIP packet across two successive isochronous receive buffers, the parsing state machine transfers DV data from within each partial CIP packet to the user buffer.
Once a user buffer is full, it preferably contains an entire DV frame. The parsing state machine returns the filled user buffer to the stream class driver. The stream class driver delivers complete DV frames to a multimedia Application Program Interface (API) module, which may then perform operations such as frame decompression and rendering.
One aspect of the present invention is a method for parsing a stream of packets received from a transmission device, where a subset of packets within the stream include data content. The data content is generated from, or forms a portion of, source data that is organized in accordance with a predetermined format. The predetermined format may be, for example, a standard DV frame format. The method includes the step of receiving a stream of packets, where such packets preferably comprise IEEE 1394-1995 isochronous packets, each of which includes a CIP packet 20. Each CIP packet 20 includes a header field 22, and may include a data field 24. The method further includes the steps of storing a first and a second received packet, and locating a header portion within the first packet. In the preferred embodiment, the header portion may be located by successively comparing stored quadlets with the expected format of CIP header information. The method additionally includes the step of determining whether a header portion within a second stored packet immediately follows the header portion within the first stored packet. If so, the first stored packet is empty in terms of data content, in which case the data content of the second stored packet can be considered.
The method may also include the step of determining whether the first packet corresponds to a particular boundary within the source data, such as the beginning of a DV frame. Additionally, the method may include the step of transferring data content from the first packet to a destination buffer. The packet stream is preferably received isochronously, in accordance with the IEEE 1394-1995 standard.
The method may further include the steps of storing a first portion of the second packet in a first receive buffer, and a second portion of the second packet in a second receive buffer. If the second packet includes data content, the method may include the steps of transferring data content associated with the second packet from the first receive buffer to a destination buffer, and transferring data content associated with the second packet from the second receive buffer to the destination buffer. The method may additionally include the step of advancing to a location within the second receive buffer that is beyond the portion of the second packet stored therein.
Another aspect of the invention is a system for parsing a stream of packets received from a transmission device, where a subset of packets within the stream include data content. The system includes a stream reception unit coupled to receive the stream of packets; a processing unit; and a memory wherein a first buffer, a second buffer, a stream storage module, and a parsing module reside. The stream storage module receives a stream of packets from the stream reception unit, and stores a packet sequence in a receive buffer. The parsing module determines whether successive packets residing in the receive buffer include data content, and, if so, stores such data content in a destination buffer. Preferably, the stream of packets is communicated isochronously, in accordance with the IEEE 1394-1995 standard. In such a case, the stream reception unit includes circuitry for interfacing to an IEEE 1394-1995 serial bus.
The system may further include an API module within the memory that is responsive to a signal generated by the parsing module. This signal indicates that the API module may begin processing the contents of the destination buffer, for example, by performing DV frame decompression and rendering operations.
Still another aspect of the invention is a data communication network in which a sending node configured to transmit data packets is coupled via a network segment to a receiving node configured to receive and parse such packets. Each transmitted packet includes header information, while a subset of transmitted packets also include data content. The receiving node includes a network interface unit coupled to receive a stream of packets; a processing unit; and a memory in which a receive buffer, a destination buffer, a packet storage module, and a parsing module reside. The packet storage module stores a sequence of received packets in the receive buffer. The parsing module determines whether packets within the receive buffer include data content, and, if so, stores such data content in the destination buffer. In the preferred embodiment, the data packets are communicated isochronously from the sending node to the receiving node, and the network segment is an IEEE 1394-1995 serial bus.
The memory may further include an API module that is responsive to a signal received from the parsing module. This signal indicates that the API module may initiate processing operations upon the contents of the destination buffer. Such operations may include, for instance, DV frame decompression and rendering operations.
According to yet another aspect of the present invention, an IEEE 1394 serial bus network includes an IEEE 1394 serial bus that couples a transmitting device and a receiving device. The transmitting device is configured to transmit a stream of packets upon the IEEE 1394 serial bus, where a subset of such packets include data content. The receiving device includes a stream reception unit coupled to receive the stream of packets; a processing unit; and a memory. The memory includes a receive buffer, a destination buffer, a stream storage module, and a parsing module. The stream storage module stores a sequence of packets received from the stream reception unit in the receive buffer. The parsing module determines whether successive packets residing within the receive buffer include data content, and, if so, stores such data content in the destination buffer.
According to another aspect of the present invention, a computer readable medium stores program instructions for directing a processing unit to parse a stream of packets. The packets are received from a transmission device, where a subset of such packets include data content generated from source data organized in accordance with a predetermined format. The program instructions may direct the processing unit to perform the steps of locating a header portion within a first packet; determining whether a header portion within a second packet immediately follows the header portion within the first packet; determining whether the first packet corresponds to a particular boundary within the source data, such as the beginning of a DV frame; and transferring data content within the first packet to a buffer.